class Solution {
	
public:
    bool circularArrayLoop(vector<int>& nums) {
    	
        if(nums.size()==0){
			return false;
		}
		int n=nums.size();
		bool bRet=false;
		for(int i=0;i<n;++i){
			bool bFlg=false;
			if(nums[i]>0){
				bFlg=true;
			}
			int pos=i;
            int len=0;
			int cur=pos;
			int cnt=n;
			while(cnt--){
				if(nums[cur]<0 && bFlg==true || nums[cur]>0 && bFlg==false){
					break;
				}
                int pre=cur;
				cur=cur+nums[cur];
				if(cur>=0){
					cur%=n;
				}
				else{
					cur=-cur;
					cur%=n;
					cur=n-cur;
				}
				if(cur==pos && cur!=pre){
					bRet=true;
					break;
				}
                if(cur==pre){
                    break;
                }
			}
			if(cur==pos && cnt==0){
				bRet=true;
                break;
			}
		}
		
		return bRet;
    }
};
